//这里有 n 个航班，它们分别从 1 到 n 进行编号。
//有一份航班预订表 bookings ，表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti （包含 firsti 和 lasti ）的 每个航班 上预订了 seatsi 个座位。
//请你返回一个长度为 n 的数组 answer，其中 answer[i] 是航班 i 上预订的座位总数。
class Solution {
    public int[] corpFlightBookings(int[][] bookings, int n) {
        //差分数组求解
        int[] nums = new int[n];
        for(int[] booking : bookings){
            nums[booking[0]-1]+=booking[2];
            if(booking[1]<n){
                nums[booking[1]]-=booking[2];
            }
        }
        //生成累加之后的数组
        for(int i=1;i<n;i++){
            nums[i] += nums[i-1];
        }
        return nums;
    }
}


//暴力解法
//class Solution {
    public int[] corpFlightBookings(int[][] bookings, int n) {
        int[] result = new int[n];
        for(int[] booking: bookings ){
           for(int j = booking[0]; j<=booking[1];j++){
               result[j-1] += booking[2];
           }
        }
        return result;
       
    }
}